package com.demo.zhou.sniper.util.tool;


import android.util.Log;

import com.demo.zhou.sniper.module.D2Value;
import com.demo.zhou.sniper.module.Yxintiaojian;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;

public class Yongyz {

    //根据传入的结果集，得到d2线，根据d2线进行应用值计算
    //参数，结果集，应用值类型，基数

    /**
     * 及时清洁7
     *
     * @param d2List
     */
    public static void qingQi(List<D2Value> d2List, Yxintiaojian yxintiaojian) {
        double jshu = yxintiaojian.getJshu();
        if (d2List.size() == 2) {
            //第2个起值，
            if (d2List.get(d2List.size() - 2).getD2Value() == 0) {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(jshu);
                d2Value.setD2ljValue(0);
                d2List.set(d2List.size() - 1, d2Value);
            } else {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(d2List.get(d2List.size() - 2).getD2Value());
                d2Value.setD2ljValue(d2List.get(d2List.size() - 2).getD2ljValue());
                d2List.set(d2List.size() - 1, d2Value);
            }

        } else if (d2List.size() > 2) {
            D2Value d2Value = d2List.get(d2List.size() - 2);
            D2Value d2Value1 = d2List.get(d2List.size() - 1);
            if (d2Value.isD2Lock()) {
                d2Value1.setD2Value(d2Value.getD2Value());
                d2Value1.setD2ljValue(d2Value.getD2ljValue());
            } else if (d2Value.isD2Duicuo()) {
                d2Value1.setD2Value(jshu);
                d2Value1.setD2ljValue(d2Value.getD2ljValue() + d2Value.getD2Value());
            } else {
                d2Value1.setD2Value(2 * d2Value.getD2Value() + jshu);
                d2Value1.setD2ljValue(d2Value.getD2ljValue() - d2Value.getD2Value());
            }
        }
    }

    /**
     * 横向124
     *
     * @param d2List
     */
    public static void hengXiang124(List<D2Value> d2List, Yxintiaojian yxintiaojian) {
        double jshu = yxintiaojian.getJshu();
        double fancheng = yxintiaojian.getFanc();
        if (d2List.size() == 2) {
            //第2个起值，
            if (d2List.get(d2List.size() - 2).getD2Value() == 0) {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(jshu);
                d2Value.setHxlj(jshu);
                d2Value.setD2ljValue(0);
                d2List.set(d2List.size() - 1, d2Value);
            } else {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(d2List.get(d2List.size() - 2).getD2Value());
                d2Value.setHxlj(d2List.get(d2List.size() - 2).getHxlj());
                d2Value.setD2ljValue(d2List.get(d2List.size() - 2).getD2ljValue());
                d2Value.setHxi(d2List.get(d2List.size() - 2).getHxi());
                d2List.set(d2List.size() - 1, d2Value);

            }
        } else if (d2List.size() > 2) {
            D2Value d2Value = d2List.get(d2List.size() - 2);
            D2Value d2Value1 = d2List.get(d2List.size() - 1);
            double hljz = d2Value.getHxlj();
            int i = d2Value.getHxi();
            if (d2Value.isD2Lock()) {
                d2Value1.setD2Value(d2Value.getD2Value());
                d2Value1.setD2ljValue(d2Value.getD2ljValue());
                d2Value1.setHxi(i);
                d2Value1.setHxlj(hljz);
                return;
            }

            if (d2Value.isD2Duicuo()) {
                hljz += d2Value.getD2Value();
                d2Value1.setD2ljValue(d2Value.getD2ljValue() + d2Value.getD2Value());
            } else {
                hljz -= d2Value.getD2Value();
                d2Value1.setD2ljValue(d2Value.getD2ljValue() - d2Value.getD2Value());
            }
            if (hljz <= fancheng) {
                if (i >= 3) {
                    i = 1;
                    d2Value1.setD2Value(d2Value.getD2Value() * 2);
                } else {
                    ++i;
                    d2Value1.setD2Value(d2Value.getD2Value());
                }
            } else {
                d2Value1.setD2Value(jshu);
                hljz = jshu;
                i = 1;
            }
            d2Value1.setHxi(i);
            d2Value1.setHxlj(hljz);
        }
    }

    /**
     * 横向137
     *
     * @param d2List
     */
    public static void hengXiang137(List<D2Value> d2List, Yxintiaojian yxintiaojian) {
        double jshu = yxintiaojian.getJshu();
        double fancheng = yxintiaojian.getFanc();
        if (d2List.size() == 2) {
            //第2个起值，
            if (d2List.get(d2List.size() - 2).getD2Value() == 0) {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(jshu);
                d2Value.setHxlj(jshu);
                d2Value.setD2ljValue(0);
                d2List.set(d2List.size() - 1, d2Value);
            } else {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(d2List.get(d2List.size() - 2).getD2Value());
                d2Value.setHxlj(d2List.get(d2List.size() - 2).getHxlj());
                d2Value.setD2ljValue(d2List.get(d2List.size() - 2).getD2ljValue());
                d2Value.setHxi(d2List.get(d2List.size() - 2).getHxi());
                d2List.set(d2List.size() - 1, d2Value);

            }
        } else if (d2List.size() > 2) {
            D2Value d2Value = d2List.get(d2List.size() - 2);
            D2Value d2Value1 = d2List.get(d2List.size() - 1);
            double hljz = d2Value.getHxlj();
            int i = d2Value.getHxi();
            if (d2Value.isD2Lock()) {
                d2Value1.setD2Value(d2Value.getD2Value());
                d2Value1.setD2ljValue(d2Value.getD2ljValue());
                d2Value1.setHxi(i);
                d2Value1.setHxlj(hljz);
                return;
            }

            if (d2Value.isD2Duicuo()) {
                hljz += d2Value.getD2Value();
                d2Value1.setD2ljValue(d2Value.getD2ljValue() + d2Value.getD2Value());
            } else {
                hljz -= d2Value.getD2Value();
                d2Value1.setD2ljValue(d2Value.getD2ljValue() - d2Value.getD2Value());
            }
            if (hljz <= fancheng) {
                if (i >= 3) {
                    i = 1;
                    d2Value1.setD2Value(d2Value.getD2Value() * 2 + jshu);
                } else {
                    ++i;
                    d2Value1.setD2Value(d2Value.getD2Value());
                }
            } else {
                d2Value1.setD2Value(jshu);
                hljz = jshu;
                i = 1;
            }
            d2Value1.setHxi(i);
            d2Value1.setHxlj(hljz);
        }
    }


    /**
     * 越级2
     */
    public static void yuJi(List<D2Value> d2List, Yxintiaojian yxintiaojian) {
        double jshu = yxintiaojian.getJshu();
        if (d2List.size() == 2) {
            //第2个起值，
            if (d2List.get(d2List.size() - 2).getD2Value() == 0) {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(jshu);
                d2Value.setD2ljValue(0);
                d2List.set(d2List.size() - 1, d2Value);
            } else {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(d2List.get(d2List.size() - 2).getD2Value());
                d2Value.setD2ljValue(d2List.get(d2List.size() - 2).getD2ljValue());
                d2List.set(d2List.size() - 1, d2Value);
            }
        } else if (d2List.size() > 2) {
            D2Value d2Value = d2List.get(d2List.size() - 2);
            D2Value d2Value1 = d2List.get(d2List.size() - 1);
            double yljz = d2Value.getYjlj();
            boolean yb = d2Value.isYjyb();
            if (d2Value.isD2Lock()) {
                d2Value1.setD2Value(d2Value.getD2Value());
                d2Value1.setD2ljValue(d2Value.getD2ljValue());
            } else if (d2Value.isD2Duicuo()) {
                if (d2Value.getD2Value() == jshu) {
                    yljz = jshu;
                    yb = true;
                }
                if (yb) {
                    //第一个对
                    double dValue = d2Value.getD2Value();
                    d2Value1.setD2Value(2 * dValue);
                    yb = false;
                } else {
                    d2Value1.setD2Value(jshu);
                    yljz = jshu;
                }
                yljz += d2Value.getD2Value();
                d2Value1.setD2ljValue(d2Value.getD2ljValue() + d2Value.getD2Value());
            } else {
                if (!yb) {
                    yb = true;
                }
                if (jshu == d2Value.getD2Value()) {
                    yljz = jshu;
                    yb = true;
                }
                yljz -= d2Value.getD2Value();
                d2Value1.setD2Value((Math.floor((((Math.abs(yljz / jshu)) + 4) / 3)) + 1) * jshu);
                d2Value1.setD2ljValue(d2Value.getD2ljValue() - d2Value.getD2Value());
            }
            d2Value1.setYjlj(yljz);
            d2Value1.setYjyb(yb);
        }
    }

    /**
     * 斐波
     *
     * @param d2List
     * @param yxintiaojian
     */
    public static void feiBo(List<D2Value> d2List, Yxintiaojian yxintiaojian) {
        double jshu = yxintiaojian.getJshu();
        int scale = 0;
        double jshuscale = jshu;
        while (jshuscale <= 1) {
            jshuscale *= 10;
            scale++;
        }
        float wangfjd = yxintiaojian.getWangfanjd();
        float fanchengzhi = yxintiaojian.getFanc();
        if (d2List.size() == 2) {
            //第2个起值，
            if (d2List.get(d2List.size() - 2).getD2Value() == 0) {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(jshu);
                d2Value.setD2ljValue(0);
                d2List.set(d2List.size() - 1, d2Value);
            } else {
                D2Value d2Value = d2List.get(d2List.size() - 1);
                d2Value.setD2Value(d2List.get(d2List.size() - 2).getD2Value());
                d2Value.setD2ljValue(d2List.get(d2List.size() - 2).getD2ljValue());
                d2List.set(d2List.size() - 1, d2Value);
                d2List.get(d2List.size() - 2).setD2Value(d2List.get(d2List.size() - 2).getNextValue());
            }
        } else if (d2List.size() > 2) {
            D2Value d2Value = d2List.get(d2List.size() - 2);
            D2Value d2Value1 = d2List.get(d2List.size() - 1);
            boolean b = d2Value.isFeibob();
            double d = d2Value.getFeibod();
            if (d2Value.isD2Lock()) {
                if (b) {
                    d2Value1.setD2Value(d2Value.getD2Value());
                } else {
                    d2Value1.setD2Value(d2Value.getD2Value());
                    b = true;
                    d = d2List.get(d2List.size() - 3).getD2Value();
                }
                d2Value1.setD2ljValue(d2Value.getD2ljValue());
                d2Value1.setFeibolj(d2Value.getFeibolj());
            } else if (d2Value.isD2Duicuo()) {
                if (d2Value.getFeibolj() + d2Value.getD2Value() >= fanchengzhi) {
                    d2Value1.setD2Value(jshu);
                    d2Value1.setFeibolj(0);
                } else {
                    if (d2Value.getD2Value() >= wangfjd) {
                        if (d2List.get(d2List.size() - 3).getD2Value() > d2Value.getD2Value()) {
                            double f = d2Value.getD2Value() * 0.5;
                            BigDecimal bd = new BigDecimal(f);
                            double f1 = bd.setScale(scale, RoundingMode.HALF_UP).doubleValue();
                            d2Value1.setD2Value(f1);
                        } else {
                            if (b) {
                                d2Value1.setD2Value(d);
                                b = false;
                            } else {
                                d2Value1.setD2Value(d2List.get(d2List.size() - 3).getD2Value());
                            }
                        }
                    } else {
                        if (d2Value.getD2Value() == jshu) {
                            double f = d2Value.getD2Value() * 1.5;
                            BigDecimal bd = new BigDecimal(f);
                            double f1 = bd.setScale(scale, RoundingMode.HALF_UP).doubleValue();
                            d2Value1.setD2Value(f1);
                        } else {
                            if (b) {
                                if (d2List.get(d2List.size() - 3).isD2Lock()){
                                    d2Value1.setD2Value(d2Value.getD2Value() + d);
                                }else {
                                    d2Value1.setD2Value((Math.rint(d2Value.getD2Value()) + Math.rint(d2List.get(d2List.size() - 3).getD2Value())));
                                }
                                b = false;
                            } else {
                                d2Value1.setD2Value(d2Value.getD2Value() + d2List.get(d2List.size() - 3).getD2Value());
                            }
                        }
                    }
                    d2Value1.setFeibolj(d2Value.getFeibolj() + d2Value.getD2Value());
                }
                d2Value1.setD2ljValue(d2Value.getD2ljValue() + d2Value.getD2Value());
            } else {
                //错
                if (d2Value.getD2Value() == jshu) {
                    double f = d2Value.getD2Value() * 1.5;
                    BigDecimal bd = new BigDecimal(f);
                    double f1 = bd.setScale(scale, RoundingMode.HALF_UP).doubleValue();
                    d2Value1.setD2Value(f1);
                } else {
                    Log.d("feibo", "feiBo: " + d2Value.getD2Value());
                    if (b) {
                        if (d2List.get(d2List.size() - 3).isD2Lock()){
                            d2Value1.setD2Value(d2Value.getD2Value() + d);
                        }else {
                            d2Value1.setD2Value((Math.rint(d2Value.getD2Value()) + Math.rint(d2List.get(d2List.size() - 3).getD2Value())));
                        }
                        b = false;
                    } else {
                        if (jshu < 1) {
                            d2Value1.setD2Value((Math.rint(d2Value.getD2Value()) + Math.rint(d2List.get(d2List.size() - 3).getD2Value())));

                        } else {
                            d2Value1.setD2Value((Math.rint(d2Value.getD2Value()) + Math.rint(d2List.get(d2List.size() - 3).getD2Value())));

                        }
                    }
                }
                d2Value1.setFeibolj(d2Value.getFeibolj() - d2Value.getD2Value());
                d2Value1.setD2ljValue(d2Value.getD2ljValue() - d2Value.getD2Value());
            }
            d2Value1.setFeibob(b);
            d2Value1.setFeibod(d);
        }
    }


    /**
     * 回查列表的下一个d2值
     *
     * @param arrayList
     * @return
     */
//    public static D2Value downD2Volue(List<D2Value> arrayList) {
//        for (int i = arrayList.size() - 2; i > 1; i--) {
//            if (i == 1) {
//                return arrayList.get(1);
//            } else {
//                if (!arrayList.get(i).isD2Lock()) {
//                    return arrayList.get(i);
//                }
//            }
//        }
//        return null;
//    }

}
